Public Class PubmedSummary
    Inherits SummaryDataRecord

    'ToDo Change all methods to account for shifting result fields


    ''' <remarks>Entrez databases return types with different field lengths depending 
    ''' on the data avialable for the result.
    ''' This method is used to determine the proper index of a given field based on the 
    ''' current result type. This is a workaround and should be avoided if possible.
    ''' </remarks>
    Public Enum ItemTypeDefaultFields
        PubDate = 0
        EPubDate = 1
        Source = 2
        AuthorList = 3
        LastAuthor = 4
        Title = 5
        Volume = 6
        Issue = 7
        Pages = 8
        LangList = 9
        NlmUniqueID = 10
        ISSN = 11
        ESSN = 12
        PubTypeList = 13
        RecordStatus = 14
        PubStatus = 15
        ArticleIds = 16
        DOI = 17
        History = 18
        References = 19
        HasAbstract = 20
        PmcRefCount = 21
        FullJournalName = 22
        SO = 23

    End Enum




    Public Overrides Function GetData(ByVal i As Integer) As System.Data.IDataReader

        Throw New NotImplementedException("")

    End Function


    Public Function GetPubDate() As String

        Return MyBase.GetString(Me.GetFieldIndex(ItemTypeDefaultFields.PubDate.ToString))

    End Function

    Public Function GetEPubDate() As String

        Return MyBase.GetDateTime(Me.GetFieldIndex(ItemTypeDefaultFields.EPubDate.ToString)).ToShortDateString

    End Function

    Public Function GetSource() As String

        Return MyBase.GetString(Me.GetFieldIndex(ItemTypeDefaultFields.Source.ToString))

    End Function

    Public Function GetAuthorList() As String()

        Return MyBase.GetList(Me.GetFieldIndex(ItemTypeDefaultFields.AuthorList.ToString))

    End Function

    Public Function GetLastAuthor() As String

        Return MyBase.GetString(Me.GetFieldIndex(ItemTypeDefaultFields.LastAuthor.ToString))

    End Function

    Public Function GetTitle() As String

        Return MyBase.GetString(Me.GetFieldIndex(ItemTypeDefaultFields.Title.ToString))

    End Function

    Public Function GetVolume() As String

        Return MyBase.GetString(Me.GetFieldIndex(ItemTypeDefaultFields.Volume.ToString))

    End Function

    Public Function GetIssue() As String

        Return MyBase.GetString(Me.GetFieldIndex(ItemTypeDefaultFields.Issue.ToString))

    End Function

    Public Function GetPages() As String

        Return MyBase.GetString(Me.GetFieldIndex(ItemTypeDefaultFields.Pages.ToString))

    End Function

    Public Function GetLangList() As String()

        Return MyBase.GetList(Me.GetFieldIndex(ItemTypeDefaultFields.LangList.ToString))

    End Function

    Public Function GetNlmUniqueID() As String

        Return MyBase.GetString(Me.GetFieldIndex(ItemTypeDefaultFields.NlmUniqueID.ToString))

    End Function

    Public Function GetISSN() As String

        Return MyBase.GetString(Me.GetFieldIndex(ItemTypeDefaultFields.ISSN.ToString))

    End Function

    Public Function GetESSN() As String

        Return MyBase.GetString(Me.GetFieldIndex(ItemTypeDefaultFields.ESSN.ToString))

    End Function

    Public Function GetPubTypeList() As String()

        Return MyBase.GetList(Me.GetFieldIndex(ItemTypeDefaultFields.PubTypeList.ToString))

    End Function

    Public Function GetRecordStatus() As String

        Return MyBase.GetString(Me.GetFieldIndex(ItemTypeDefaultFields.RecordStatus.ToString))

    End Function

    Public Function GetPubStatus() As String

        Return MyBase.GetString(Me.GetFieldIndex(ItemTypeDefaultFields.PubStatus.ToString))

    End Function

    Public Function GetArticleIds() As String()

        Return MyBase.GetList(Me.GetFieldIndex(ItemTypeDefaultFields.ArticleIds.ToString))

    End Function

    Public Function GetHistory() As String()

        Return MyBase.GetList(Me.GetFieldIndex(ItemTypeDefaultFields.History.ToString))

    End Function

    Public Function GetReferences() As String()

        Return MyBase.GetList(Me.GetFieldIndex(ItemTypeDefaultFields.References.ToString))

    End Function

    Public Function GetHasAbstract() As Integer

        Return MyBase.GetInteger(Me.GetFieldIndex(ItemTypeDefaultFields.HasAbstract.ToString))

    End Function

    Public Function GetPmcRefCount() As Integer

        Return MyBase.GetInteger(Me.GetFieldIndex(ItemTypeDefaultFields.PmcRefCount.ToString))

    End Function


    Public Function GetFullJournalName() As String

        Return MyBase.GetString(Me.GetFieldIndex(ItemTypeDefaultFields.FullJournalName.ToString))

    End Function

    Public Function GetSO() As String

        Return MyBase.GetString(Me.GetFieldIndex(ItemTypeDefaultFields.SO.ToString))

    End Function


    Public Function GetDOI() As String

        Return MyBase.GetString(Me.GetFieldIndex(ItemTypeDefaultFields.DOI.ToString))

    End Function


End Class
